/*
   2025-4-30Miaozi：串口发送数据方法备忘，①数据准备阶段-数据入队or压栈 ②如果有rtos，考虑外部等待外部信号量。没有rtos直接通过Sending变量进行互斥判定③启动DMA发送
*/
#ifndef __BSP_UART_DMA_H
#define __BSP_UART_DMA_H

#include "usart.h"
#include "dma.h"

#define   UART_TX_DONE     (1<<0)        //  TX完成
#define   UART_RX_DONE     (1<<1)        //  RX完成

/* 串口设备结构体 */
typedef struct
{
  UART_HandleTypeDef  *tpUart;  // STM32内部串口设备指针 
  DMA_HandleTypeDef   *tpDmaTx; //  发送dma句柄
  DMA_HandleTypeDef   *tpDmaRx; //  接收dma句柄
  
  BUFFER_T *tpTxBuf;              //  发送缓冲区
  BUFFER_T *tpRxBuf;              //  接收缓冲区 

  u8 state;     //  状态
}UART_T;

extern UART_T   g_tUart2;
extern UART_T   g_tUart4;

//  初始化串口
void BSP_UART_Init(void);
//  串口发送数据——不再压缓存
void BSP_UART_Transmit(UART_T *hDevUart,u8 *pData,u16 Size);
//  串口压入缓存区后台发送数据——压缓存
void BSP_UART_TransmitBuf(UART_T *hDevUart,u8 *pData,u16 Size);

#endif
/***************************** LiteBsp by Miaozi (END OF FILE) *********************************/
